<?php
namespace lib\base;
use think\Config;
use think\App;
/**
 * Description of tpl
 *
 * @author zhangqiquan
 */
class tpl {
    //template 
    static protected $config = [
        // 模板起始路径
        'view_path'   => '',
        // 模板文件后缀
        'view_suffix' => 'html',
        // 模板文件名分隔符
        'view_depr'   => DS,
        // 是否开启模板编译缓存,设为false则每次都会重新编译
        'tpl_cache'   => true,
    ];
    function __construct() {
        
        self::$config =array_merge(self::$config,Config::get('template'));
    }

    /**
     * 自动定位模板文件
     * @access private
     * @param string $template 模板文件规则
     * @return string
     */
    static public function parseTemplate($template='')
    {
        $site_wap='site';
        $server_path=explode(DS, explode(DS.'public'.DS, $_SERVER['SCRIPT_FILENAME'])[1]);
        if($server_path[0]=='wap')$site_wap='wap';
        self::$config['view_path'] = App::$modulePath . 'view' . DS.$site_wap.DS;
        // 获取视图根目录
        if (strpos($template, '@')) {
            // 跨模块调用
            list($module, $template) = explode('@', $template);
            $path                    = APP_PATH . $module . DS . 'view' . DS.$site_wap.DS;
        } else {
            // 当前视图目录
            $path = self::$config['view_path'];
        }
        
        // 分析模板文件规则
        $request    = \think\Request::instance();
        $controller = $request->controller();
        if ($controller && 0 !== strpos($template, '/')) {
            $depr     = self::$config['view_depr'];
            $template = str_replace(['/', ':'], $depr, $template);
            if ('' == $template) {
                // 如果模板文件名为空 按照默认规则定位
                $template = str_replace('.', DS, $controller) . $depr . $request->action();
            } elseif (false === strpos($template, $depr)) {
                $template = str_replace('.', DS, $controller) . $depr . $template;
            }
        }
        return ['tpl'=>$path . ltrim($template, '/') . '.' . ltrim(self::$config['view_suffix'], '.'),'site_wap'=>$site_wap];
    }
}
